package design.pattern.prototype.shallow;

import java.util.Arrays;

/**
 * @description:
 * @author: liuzhangcheng
 **/
public class PrototypeTest {
    public static void main(String[] args) {
        ConcretePrototypeA prototype = new ConcretePrototypeA();
        prototype.setId(1);
        prototype.setName("LZC");
        prototype.setLikes(Arrays.asList());

        ConcretePrototypeA prototypeClone = (ConcretePrototypeA) prototype.clone();

        System.out.println("原型对象：" + prototype);
        System.out.println("克隆对象：" + prototypeClone);
        System.out.println("原型对象引用List对象地址：" + prototype.getLikes());
        System.out.println("克隆对象引用List对象地址：" + prototypeClone.getLikes());
        // 结果为true， 是浅拷贝，复制的不是值，而是引用的地址
        System.out.println("原型与克隆对象引用List对象地址比较：" + (prototype.getLikes() == prototypeClone.getLikes()));
        // 如 果 我 们 修 改 任 意 一 个 对 象 中 的 属 性 值 ， prototype 和 prototypeClone 的 lkes 值都会改变。

    }
}
